package com.dash.dashupload;

import com.dash.pojo.Video;

import android.os.AsyncTask;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;

/**  
 * 生成该类的对象，并调用execute方法之后  
 * 首先执行的是onProExecute方法  
 * 其次执行doInBackgroup方法  
 *  
 *  第一个参数为执行任务传入的参数，第二个为更新返回参数，第三个为执行完后台任务返回的参数
 */  
public class ResumeUploadTask extends AsyncTask<Video, Integer, Integer>{
    private TextView textView;  
    private ProgressBar progressBar;  
    private UploadFileUtil uploadFileUtil;
      
    public ResumeUploadTask(TextView textView, ProgressBar progressBar) {  
        this.textView = textView;  
        this.progressBar = progressBar;  
    }  
  
  
    /**  
     * 这里的Integer参数对应AsyncTask中的第一个参数   
     * 这里的String返回值对应AsyncTask的第三个参数  
     * 该方法并不运行在UI线程当中，主要用于异步操作，所有在该方法中不能对UI当中的空间进行设置和修改  
     * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作  
     */  
    @Override  
    protected Integer doInBackground(Video... params) {  
    	uploadFileUtil=new UploadFileUtil();
    	int uploadAlready=0;
    	for(Video video:params){
    		if(video.isUpload())
    			uploadAlready++;
    	};
    	System.out.println("Alrealy:"+uploadAlready);
    	//3
    	//int len=params.length-1;
    	progressBar.setMax(params.length);
    	publishProgress(uploadAlready);
    	int i=uploadAlready;
        for (; i <params.length; i++) {
        	Log.i("doInBackgrould---","uploadFile:"+params[i]);
        	uploadFileUtil
			.uploadFile(params[i].getSrcPath(),
					params[i].getUserId(),
					params[i].getTitle(),
					params[i].getSegmentTotal(),
					params[i].getSegmentFileName(),
					params[i].getDate());
            publishProgress(i+1);  
        }  
        return i;  
    }  
  
  
    /**  
     * 这里的String参数对应AsyncTask中的第三个参数（也就是接收doInBackground的返回值）  
     * 在doInBackground方法执行结束之后在运行，并且运行在UI线程当中 可以对UI空间进行设置  
     */  
    @Override  
    protected void onPostExecute(Integer result) {  
    	System.out.println("上传操作执行结束" + result);  
    }  
  
  
    //该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置  
    @Override  
    protected void onPreExecute() {  
        System.out.println("开始执行异步上传线程");  
    }  
  
  
    /**  
     * 这里的Intege参数对应AsyncTask中的第二个参数  
     * 在doInBackground方法当中，，每次调用publishProgress方法都会触发onProgressUpdate执行  
     * onProgressUpdate是在UI线程中执行，所有可以对UI空间进行操作  
     */  
    @Override  
    protected void onProgressUpdate(Integer... values) {  
        int vlaue = values[0];  
        progressBar.setProgress(vlaue);  
    }  
  
      
      
      
}
